#! /bin/bash

###########################################################################
#
#  This file is part of the ParaNut project.
#
#  Copyright (C) 2023 Lukas Bauer <lukas.bauer@hs-augsburg.de>
#      Efficient Embedded Systems Group
#      Hochschule Augsburg, University of Applied Sciences
#
#  Description:
#      This script can test the whole debug infrastructure in simulation.
#      It runs a simple program in the simulator and performes Debug tasks on
#      this software and checks if the results matching with the expected results.
#
#  --------------------- LICENSE -----------------------------------------------
#  Redistribution and use in source and binary forms, with or without modification,
#  are permitted provided that the following conditions are met:
#
#  1. Redistributions of source code must retain the above copyright notice, this
#     list of conditions and the following disclaimer.
#
#  2. Redistributions in binary form must reproduce the above copyright notice,
#     this list of conditions and the following disclaimer in the documentation and/or
#     other materials provided with the distribution.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
#  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
#  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
#  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
#  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
###########################################################################



cd ${PARANUT_TOOLS}/..

counter=0

while [ $counter -lt 10 ]
do

    # start the simulator, openocd and gdb and run the test
    hw/sim/pn-sim -d sw/hello_newlib/hello_newlib  &
    sleep 3
    openocd -f ${PARANUT_TOOLS}/etc/openocd-sim.cfg &
    sleep 3
    { time riscv64-unknown-elf-gdb --batch -x ${PARANUT_TOOLS}/gdbtest/gdb_debugtime  sw/hello_newlib/hello_newlib ; } 2>> ${PARANUT_TOOLS}/gdbtest/time.txt

    # close openocd and the simulator when the test is done
    pkill -f "openocd -f ${PARANUT_TOOLS}/etc/openocd-sim.cfg"
    pkill -f "hw/sim/pn-sim -d sw/hello_newlib/hello_newlib"

    ((counter++))

done






